1. Field of the Invention
The present invention generally relates to a driver architecture and, more particularly, to a system interface abstraction layer.
2. Description of the Related Art
One major issue for communications systems is support for peripheral devices. Most communications systems, from the low end to the high end, have an ever increasing array of possible peripheral devices such as modems, printers, plotters, fax machines and scanners. Not only new devices but new device types are frequently developed. Each specific type of device has its own memory, I/O and management requirements, and, often, two devices of the same type can have different requirements as well. In the face of this increasing complexity, much time and expense is expended by programmers and hardware designers to ensure that new devices and new device types are compatible with old devices and types. Often a new device may offer a feature that is simply not supported by the existing hardware and software, thus preventing the new device from fully utilizing all its features.
Typically, a new peripheral device, a new class of peripheral devices, a new processing card or a new type of processor is integrated into a communications system with drivers that provide code necessary to send commands to and receive replies or data directly from the operating system. Much of the code necessary for integration duplicates older code written for other devices, classes, cards or processors. This duplication may even extend across code for devices, classes, cards and processors, particularly if the code is designed to access commonly used features of an operating system or software module.
One example of an attempt to deal with this issue is the Network Driver Interface Specification (NDIS) written by the Microsoft Corporation of Redmond, Wash. NDIS defines a common software module interface for a network protocol stack which provides for network communications, adapter drivers which provide media access control (MAC), and protocol managers which enable the protocol stack and the MAC to cooperate. NDIS allows Microsoft® Windows modules, which implement different connectionless protocol stacks such as TCP/IP and IPX/SPX, to access different network hardware types such as Ethernet and token ring in a uniform manner. NDIS enables these functions by implementing a NDIS miniport interface.